package bean.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;



import Entities.ServicioAdicional;



public class ServicioAdicionalDAO {

	private static ServicioAdicionalDAO instancia;
	private static SessionFactory sf;
	
	public static ServicioAdicionalDAO getInstancia(){
		if(instancia == null){
			sf = (HibernateDAO.getInstancia().getSession().getSessionFactory());
			instancia = new ServicioAdicionalDAO();
		} 
		return instancia;
	}
	
	@SuppressWarnings("unchecked")
	public List<ServicioAdicional> obtenerServiciosAdicionales() {
		Session s = HibernateDAO.getInstancia().getSession();
		Transaction t = s.beginTransaction();
		List<ServicioAdicional> lista = s.createQuery("from ServicioAdicional").list();		
		t.commit();
		return lista;
	}

	public ServicioAdicional getServicioAdicional(int id) {
		Session s = HibernateDAO.getInstancia().getSession();
		Transaction t = s.beginTransaction();
		ServicioAdicional servicio = (ServicioAdicional) s.createQuery(" from ServicioAdicional where id = :identificador").setParameter("identificador", id).uniqueResult();		
		t.commit();
		return servicio;
	}

	public void bajaServicioAdicional(int id) {
		Session s = HibernateDAO.getInstancia().getSession();
		Transaction t = s.beginTransaction();
		Query buscarServicioAdicional =  s.createQuery("SELECT s FROM ServicioAdicional s WHERE s.Id = :id").setParameter("id",id);
		ServicioAdicional servicio = (ServicioAdicional) buscarServicioAdicional.uniqueResult();
        //Borro el objeto de persistencia
        s.delete(servicio);
        t.commit();
		
	}

	public void altaServicioAdicional(ServicioAdicional ServicioAdicional) {
	
		Session s = HibernateDAO.getInstancia().getSession();
		Transaction t = s.beginTransaction();
		s.save(ServicioAdicional);
		t.commit();

	}

	public static void actualizarServicioAdicional(int id,ServicioAdicional ServicioAdicional) {
		
		Session s = HibernateDAO.getInstancia().getSession();
		Transaction t = s.beginTransaction();
		Query buscarServicioAdicional =  s.createQuery("SELECT e FROM ServicioAdicional e WHERE e.Id = :id").setParameter("id",ServicioAdicional.getId());
		ServicioAdicional servicio = (ServicioAdicional) buscarServicioAdicional.uniqueResult();
        
		servicio.setDescripcion(ServicioAdicional.getDescripcion());
        s.update(servicio);
        t.commit();
		
	}

	public static void setSf(SessionFactory sf) {
		ServicioAdicionalDAO.sf = sf;
	}

	public static SessionFactory getSf() {
		return sf;
	}

	
		

}


